package com.atde._05_behavioral_design_patterns.visitor;


import java.util.LinkedList;
import java.util.List;

/**
 * @BelongsProject: hsp_java_design_mode
 * @BelongsPackage: com.atde._05_behavioral_design_patterns.visitor
 * @Author: Del
 * @CreateTime: 2025-06-26  16:12
 * @Description: 访问者模式中的对象结构类（ObjectStructure）
 * 负责管理元素集合（Person 对象），并提供方法让访问者可以遍历并访问每个元素
 * 是访问者模式的核心组成部分之一，解耦了 访问逻辑 和 元素本身的处理逻辑
 * @Version: 1.0
 */
public class ObjectStructure {
    // 维护了一个对象集合
    private List<Person> persons = new LinkedList<>();

    // 增加到List
    public void attach(Person person) {
        persons.add(person);
    }

    // 移除
    public void detach(Person person) {
        persons.remove(person);
    }

    // 显示
    public void display(Action action) {
        for (Person person : persons) {
            person.accept(action);
        }
    }
}
